import java.util.Scanner;

public class Demo4 {
    private static int count = 0;
    public static void main(String[] args) {
        Thread t1 = new Thread(()->{
            //while循环是 load 从内存读取数据到 cpu 寄存器
            //cmp (比较,同时会产生跳转)  条件成立,继续顺序执行; 条件不成立,就跳转到另外一个地址来执行
            //load 执行的时间会比 cmp 多很多
            //在t1执行时(t2修改之前),JVM发现每次 load 执行的结果是一样的--->于是JVM优化 load 操作,只进行一次真正的 load 后续执行的对应代码不是真正的 load
            //优化掉速度慢的,提高程序的整体执行速度
            while(count==0){
               //循环体内有代码时,结果会不一样
               //这就是内存可见性问题
               //System.out.println("t1");
           }
            System.out.println("t1 执行结束!");
        });

        Thread t2 = new Thread(()->{
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入一个整数:");
            count = scanner.nextInt();//修改操作一定是在while循环之后执行的,手速比计算机慢
            //输入后,t1没有结束
        });

        t1.start();
        t2.start();
    }
}
